﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using DevExpress.Web.ASPxEditors;
using DevExpress.Web.ASPxGridView;
using System.Configuration;

namespace WebApplication1.Admin
{
    public partial class EntidadesListado : System.Web.UI.Page
    {
        #region EntidadesDanzaDataTableCache
        private DataTable EntidadesDanzaDataTableCache
        {
            get
            {
                DataTable objTable = null;
                if (Cache["EntidadesListado.aspx" + Session.SessionID] != null)
                    objTable = (DataTable)Cache["EntidadesListado.aspx" + Session.SessionID];
                return objTable;
            }
            set
            {
                if (value != null)
                {
                    Cache.Insert("EntidadesListado.aspx" + Session.SessionID, value, null, DateTime.Now.AddMinutes(20), TimeSpan.Zero);
                }
            }
        } 
        #endregion

        #region Page_Load
        protected void Page_Load(object sender, EventArgs e)
        {

            if (!IsPostBack)
            {

                if (Session["USU_USUARIO"] == null)
                {
                    Response.Redirect("../login.aspx");
                    return;
                }

                EntidadesDanzaDataTableCache = null;
                BindDatosEntidades();
            }
            else
            {
                if (EntidadesDanzaDataTableCache != null)
                {
                    ASPxGridViewEntidades.DataSource = EntidadesDanzaDataTableCache;
                    ASPxGridViewEntidades.DataBind();
                }
            }
        } 
        #endregion

        #region StrEntId
        public string StrEntId
        {
            get
            {
                if (ViewState["StrEntId"] != null)
                    return ViewState["StrEntId"].ToString();
                return "";
            }
            set { ViewState["StrEntId"] = value; }
        } 
        #endregion

        #region crearContextItems
        private void crearContextItems()
        {
            try
            {
                Context.Items["StrEntId"] = StrEntId;
            }
            catch (Exception ex)
            {
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "msg1_error", "alert('" + ex.Message.ToString() + "');", true);
            }
        }
        #endregion

        #region GetDataView
        private DataTable GetDataView(ASPxGridView grid)
        {
            DataTable dt = new DataTable();
            foreach (GridViewColumn col in grid.VisibleColumns)
            {
                GridViewDataColumn dataColumn = col as GridViewDataColumn;
                if (dataColumn == null) continue;
                dt.Columns.Add(dataColumn.FieldName);
            }
            for (int i = 0; i < grid.VisibleRowCount; i++)
            {
                DataRow row = dt.Rows.Add();
                foreach (DataColumn col in dt.Columns)
                    row[col.ColumnName] = grid.GetRowValues(i, col.ColumnName);
            }
            return dt;
        } 
        #endregion

        #region BindDatosEntidades
        private void BindDatosEntidades()
        {
            try
            {
                string strAdministradores = ConfigurationManager.AppSettings["Administradores"].ToString();
                string[] strArregloAdministradores = strAdministradores.Split(',');
                //foreach (string var in strArregloAdministradores)
                //{
                // es administrador mostrar todos
                //if (var == Session["USU_ID"].ToString())
                //{
                //habilita el boton de Adminsitrar Usuarios

                #region Filrta el grid con por usuario




                Model.DataClassesSidanzaDataContext contexto = new Model.DataClassesSidanzaDataContext();
                var datos = from a in contexto.ART_ENTIDADES_ARTEs
                            join b in contexto.ART_ENTIDAD_ACTIVIDADs on a.ENT_ID equals b.ENT_ID
                            join c in contexto.ART_ENTIDAD_UBICACIONs on a.ENT_ID equals c.ENT_ID
                            join d in contexto.BAS_ZONAS_GEOGRAFICAs on c.ZON_ID equals d.ZON_ID
                            join e in contexto.ART_TIPO_ENTIDAD_ARTISTICAs on b.TEA_ID equals e.TEA_ID
                            join f in contexto.ART_CLASE_ENTIDAD_ARTISTICAs on b.ACE_ID equals f.ACE_ID
                            where
                                e.TEA_AREA_ID == Convert.ToInt32(ConfigurationManager.AppSettings["AREA_ID"].ToString())
                            select new
                            {
                                a.ENT_ID,
                                a.ENT_NOMBRE,
                                c.ENT_DIRECCION,
                                MUNICIPIO = d.ZON_NOMBRE,
                                DEPARTAMENTO = d.ZON_NOMBRE,
                                DESCRIPCION = "",
                                e.TEA_DESCRIPCION,
                                f.ACE_NOMBRE,
                                a.ENT_ESTADO
                            };


                if (datos == null) return;
                ASPxGridViewEntidades.BeginUpdate();
                ASPxGridViewEntidades.DataSource = datos;// objProductosComercialesRendimientosData.DefaultView;
                ASPxGridViewEntidades.DataBind();
                ASPxGridViewEntidades.EndUpdate();
                EntidadesDanzaDataTableCache = GetDataView(ASPxGridViewEntidades);
                #endregion
                // break;
                //}
                //else
                //{
                //    #region Filrta el grid con por usuario
                //    //string strProNid = "0";
                //    //if (!String.IsNullOrEmpty(Session["USU_NIT"].ToString()))
                //    //    strProNid = Session["USU_NIT"].ToString();
                //    //Consulta a la base de datos
                //    DataClasses.DataClassesProyectosDataContext contexto = new DataClasses.DataClassesProyectosDataContext();
                //    var datos = from a in contexto.APP_PROPONENTEs
                //                join b in contexto.APP_PROYECTOs on a.PRO_ID equals b.PRO_ID_PROPONENTE
                //                where object.Equals(a.PRO_NIT, Session["USU_NIT"].ToString()) && object.Equals(b.VIG_ID, ConfigurationManager.AppSettings["IDVigencia"].ToString())
                //                select new
                //                {
                //                    b.PRO_ID,
                //                    b.PRO_NOMBRE,
                //                    b.PRO_VALOR_PROYECTO,
                //                    a.PRO_NIT,
                //                    a.PRO_CORREO_ELECTRONICO_REPRESENTANTE_LEGAL,
                //                    PRO_ESTADO = contexto.FN_ESTADO_PROYECTO(b.PRO_ESTADO),
                //                    b.PRO_NUMERO_RADICACION
                //                }
                //                ;


                //    if (datos == null) return;
                //    ASPxGridViewEntidades.BeginUpdate();
                //    ASPxGridViewEntidades.DataSource = datos;// objProductosComercialesRendimientosData.DefaultView;
                //    ASPxGridViewEntidades.DataBind();
                //    ASPxGridViewEntidades.EndUpdate();
                //    ProyectosProponentesDataTableCache = GetDataView(ASPxGridViewListadoProyectos);
                //    #endregion
                //    //break;
                //}
                //}
            }
            catch (Exception ex)
            {
                ex.Message.ToString();
                //throw;
            }
        } 
        #endregion

        #region btnNuevo_Click
        protected void btnNuevo_Click(object sender, EventArgs e)
        {

            Server.Transfer("EntidadesAdministracion.aspx", true);
        } 
        #endregion

        #region btnActualizar_Click
        protected void btnActualizar_Click(object sender, EventArgs e)
        {
            List<object> keyValues = ASPxGridViewEntidades.GetSelectedFieldValues("ENT_ID");
           
            try
            {
                foreach (object key in keyValues)
                {
                    StrEntId = key.ToString();
                }
                crearContextItems();
                Server.Transfer("EntidadesAdministracion.aspx", true);
                //Response.Redirect("EntidadesAdministracion.aspx", true);
            }
            catch (Exception ex)
            {
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "msg1_error", "alert('" + ex.Message.ToString() + "');", true);
            }
        } 
        #endregion

        #region Boton Publicar
        protected void btnPublicar_Click(object sender, EventArgs e)
        {
            try
            {
                Model.DataClassesSidanzaDataContext contexto = new Model.DataClassesSidanzaDataContext();

                var datos = from a in contexto.ART_ENTIDADES_ARTEs
                            where a.ENT_ID == Convert.ToDecimal(StrEntId)
                            select a;

                foreach (var v in datos)
                {

                    v.ENT_ESTADO = 'P';
                    contexto.SubmitChanges();
                }
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "msg1_error", "LA INFORMACIÓN SE PUBLICÓ EXITOSAMENTE", true);
            }
            catch (Exception ex)
            {

                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "msg1_error", ex.Message.ToString(), true);
            }
        }
        #endregion

    }
}